package cn.cxy.MyTest;

/**
 * @Author 金帮嘉诚
 * @Date 2021-06-11 周五 15:43
 */
/*本类用于测试抽象的一些知识点*/

import java.util.Arrays;

/**
 * 知识点
 * 抽象abstract修饰类或方法
 * 权限修饰符 abstract 返回值类型 方法名（参数列表）{}
 * 有抽象方法的类一定是抽象类，抽象类可以没有抽象方法
 * 抽象和静态关键字不能在一句中出现
 */
public class TestAbstract {
    public static void main(String[] args) {
        System.out.printf("?");
//        a=new int[]{1,1,1};
//        int[] b=new int[5]{1,1,1,1,1};
//        System.out.println(Arrays.toString(a));
    }
    public final void  m(){}
    //final必须在返回值类型之前
    final public void m1(){}

}

abstract class i {
    //抽象静态不能放一块
//    static abstract void m2();
    public abstract void a();

    public abstract void b();

}

//1.1抽象子类，可以实现 也可以不实现 抽象父类中的 抽象方法
abstract class j extends i {
    @Override
    public void a() {
    }

    ;
}

//1.2非抽象子类，必须实现 抽象父类中 没有实现的 所有抽象方法
class k extends j {
    @Override
    public void b() {
    }

    ;
}

//2.非抽象子类，必须实现 抽象父类中 没有实现的 所有抽象方法
class l extends i {
    public void a() {
    }

    ;

    public void b() {
    }

    ;
}
